/**
 * 课程管理服务
 */

import { BaseApiService, TableDataInfo } from '../utils/api';
import {
  CourseVo,
  CourseAddDto,
} from '../types/api';

export interface CourseListParams {
  pageNum?: number;
  pageSize?: number;
}

export class CourseService extends BaseApiService {
  
  /**
   * 课程分页列表（需商家/导师已审核通过）
   */
  async getCourseList(params: CourseListParams = {}): Promise<TableDataInfo<CourseVo>> {
    const { pageNum = 1, pageSize = 10 } = params;
    return this.handleResponse(
      this.http.get<TableDataInfo<CourseVo>>('/api/course/page', {
        pageNum,
        pageSize,
      })
    );
  }

  /**
   * 新增课程（需商家/导师已审核通过）
   */
  async addCourse(data: CourseAddDto): Promise<boolean> {
    return this.handleResponse(
      this.http.post<boolean>('/api/course/add', data)
    );
  }

  /**
   * 课程上架（需商家/导师已审核通过）
   */
  async publishCourse(id: number): Promise<boolean> {
    return this.handleResponse(
      this.http.post<boolean>(`/api/course/${id}/publish`)
    );
  }

  /**
   * 课程下架（需商家/导师已审核通过）
   */
  async unpublishCourse(id: number): Promise<boolean> {
    return this.handleResponse(
      this.http.post<boolean>(`/api/course/${id}/unpublish`)
    );
  }
}

// 导出单例实例
export const courseService = new CourseService();
